package hamsterteam.hop.controller;

import hamsterteam.hop.ejb.EnseignantEJB;
import hamsterteam.hop.model.Enseignant;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.ejb.EJB;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel;
import javax.servlet.http.HttpServletRequest;

@ManagedBean
@SessionScoped
public class EnseignantController {
    private Enseignant selected;
    
    private Enseignant utilisateur;

    @EJB
    private EnseignantEJB enseignantEJB;

    private HtmlDataTable dataTable;

    private ListDataModel enseignantList;
    
    private String nom = null, prenom = null, pass = null;

    private void updateEnseignantList() {
        enseignantList = new ListDataModel(enseignantEJB.findAll());
    }
    
    public String doCancel() {
        updateEnseignantList();
        return "listEnseignant.xhtml";
    }
    
    public String doCancelEdit() {
        return "viewEnseignant.xhtml";
    }
    
    public String doSelect() {        
        HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        long selectedId = Long.parseLong(req.getParameter("selected"));
        if (selectedId > 0)
        {
            selected = enseignantEJB.findId(selectedId);
        }
        return "viewEnseignant.xhtml";
    }

    public String doSave() {
        enseignantEJB.update(selected);
        return "viewEnseignant.xhtml";
    }
    
    public String doLogin() {
        updateEnseignantList();
        for (Enseignant ens : (List<Enseignant>) enseignantList.getWrappedData())
        {
            if (ens.getNom().equalsIgnoreCase(nom) && ens.getPrenom().equalsIgnoreCase(prenom))
            {
                if (ens.getPassword().equals(pass))
                {
                    utilisateur = ens;
                    return "loginSuccess.xhtml";
                }
                break;
            }
        }
        return "loginFailed.xhtml";
    }
    
    public String doViewLogin(){
        return "login.xhtml";
    }
    
    public String doLogout() {
        utilisateur = null;
        return "index.xhtml";
    }
    
    public String doRetry() {
        nom = null;
        prenom = null;
        pass = null;
        return "login.xhtml";
    }

    public ListDataModel getEnseignantList() {
        updateEnseignantList();
        return enseignantList;
    }

    public void setEnseignantList(ListDataModel enseignantList) {
        this.enseignantList = enseignantList;
    }

    public HtmlDataTable getDataTable() {
        return dataTable;
    }

    public void setDataTable(HtmlDataTable dataTable) {
        this.dataTable = dataTable;
    }

    public Enseignant getSelected() {
        return selected;
    }

    public void setSelected(Enseignant selected) {
        this.selected = selected;
    }

    public Enseignant getUtilisateur() {
        return utilisateur;
    }

    public void setUtilisateur(Enseignant utilisateur) {
        this.utilisateur = utilisateur;
    }

    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

}